ViewModel ব্যবহার

Web Development - এএসপি ডট (ASP.Net) - মডেলস এবং ডাটাবাইন্ডিং |

ViewModel একটি ডিজাইন প্যাটার্ন যা MVC (Model-View-Controller) আর্কিটেকচারে ব্যবহার করা হয়। এটি Model এবং View এর মধ্যে একটি মধ্যস্থতাকারী হিসেবে কাজ করে, যা শুধুমাত্র View এর জন্য প্রয়োজনীয় ডেটা ধারণ করে। ViewModel সাধারণত Model এর চেয়ে একটি আলাদা কাস্টম ডেটা কন্টেইনার হয়ে থাকে, যাতে View এর জন্য নির্দিষ্ট প্রয়োজনীয় ডেটা থাকে।

ASP.Net MVC এবং ASP.Net Core অ্যাপ্লিকেশনে ViewModel ব্যবহার ডেটার পার্সিং, ভিউ লজিক এবং UI উপস্থাপনাকে আরও দক্ষ ও পরিষ্কার করে তোলে।


ViewModel কী?

  • ViewModel হল একটি ক্লাস যা Model এর ডেটা ধারণ করে, তবে এটি শুধুমাত্র সেই ডেটা ধারণ করে যা ভিউতে প্রদর্শন করতে প্রয়োজন।
  • এটি Controller থেকে View তে ডেটা পাঠানোর প্রক্রিয়া সহজতর করে।
  • ViewModel সাধারণত একাধিক Model এর ডেটা একত্রিত করে, যা একসাথে View তে রেন্ডার করতে সাহায্য করে।

ViewModel এর ব্যবহার

ViewModel ব্যবহার করার মাধ্যমে আপনি Model এর বিভিন্ন ডেটা একত্রিত করে একটি বিশেষভাবে ফর্ম্যাট করা ডেটা স্ট্রাকচার তৈরি করতে পারেন, যা কেবলমাত্র ভিউর জন্য প্রাসঙ্গিক।

১. ViewModel তৈরি করা

ধরা যাক, আমাদের একটি Product এবং Category মডেল রয়েছে এবং আমরা চাচ্ছি ভিউতে এই দুটি মডেল সংযুক্ত করে একটি ভিউ তৈরি করতে।

ViewModel Example:

public class ProductViewModel
{
    public string ProductName { get; set; }
    public decimal Price { get; set; }
    public string CategoryName { get; set; }
}

এখানে, ProductViewModel ক্লাসে আমরা Product এবং Category এর কিছু ডেটা ধারণ করেছি, যা ভিউতে রেন্ডার হবে।

২. Controller থেকে ViewModel পাঠানো

এখন Controller থেকে আমরা ProductViewModel পাঠাবো এবং ভিউতে রেন্ডার করব।

Controller Example:

public class ProductController : Controller
{
    public IActionResult Index()
    {
        var products = new List<ProductViewModel>
        {
            new ProductViewModel { ProductName = "Laptop", Price = 1000, CategoryName = "Electronics" },
            new ProductViewModel { ProductName = "Shirt", Price = 50, CategoryName = "Clothing" }
        };

        return View(products);
    }
}

এখানে, Index() অ্যাকশনটি একটি List তৈরি করেছে এবং সেটি View এ পাঠাচ্ছে।

৩. View তে ViewModel ব্যবহার

এখন আমরা ViewProductViewModel এর ডেটা রেন্ডার করব।

View Example (Razor):

@model List<ProductViewModel>

<h1>Product List</h1>
<table>
    <tr>
        <th>Product Name</th>
        <th>Price</th>
        <th>Category</th>
    </tr>
    @foreach (var product in Model)
    {
        <tr>
            <td>@product.ProductName</td>
            <td>@product.Price</td>
            <td>@product.CategoryName</td>
        </tr>
    }
</table>

এখানে, Model হয়ে List পাস করা হয়েছে। এরপর, আমরা foreach লুপ ব্যবহার করে প্রতিটি ProductViewModel এর প্রপার্টি (যেমন ProductName, Price, এবং CategoryName) ভিউতে প্রদর্শন করেছি।


ViewModel এর উপকারিতা

  1. Decoupling of Data: ViewModel ডেটা ভিউ থেকে মডেলকে আলাদা করে, যার ফলে মডেলটি শুধুমাত্র প্রয়োজনীয় ডেটা পাঠাবে এবং ভিউটি সেই ডেটা দেখাবে।
  2. ডেটা প্রসেসিং: আপনি ViewModel এর মধ্যে ডেটা প্রসেসিং এবং ফরম্যাটিং করতে পারেন যা ভিউর জন্য দরকারি।
  3. কমপ্লেক্স ডেটা ম্যানেজমেন্ট: একাধিক মডেল বা ডেটা সোর্স থেকে ডেটা একত্রিত করে একটি ViewModel এ সেটি পাস করতে পারেন।
  4. ডেটা সিকিউরিটি: ViewModel ব্যবহারের মাধ্যমে আপনি শুধুমাত্র সেই ডেটাই পাঠাতে পারবেন যা ভিউয়ে প্রদর্শিত হবে, যাতে অপ্রয়োজনীয় বা সংবেদনশীল তথ্য ফাঁস না হয়।
  5. সহজ টেস্টিং: ViewModel ব্যবহার করে আপনি কোডের একক অংশের জন্য সহজে ইউনিট টেস্ট করতে পারেন।

ViewModel ব্যবহার করার সময় কিছু গুরুত্বপূর্ণ বিষয়

  1. ViewModel নামকরণ: সাধারণত Model এর নামের সাথে ViewModel যুক্ত করে ViewModel ক্লাসের নাম রাখা হয়, যেমন ProductViewModel
  2. Validation: আপনি DataAnnotations ব্যবহার করে ViewModel এ ইনপুট ভ্যালিডেশন যুক্ত করতে পারেন। উদাহরণস্বরূপ:

    public class ProductViewModel
    {
        [Required]
        public string ProductName { get; set; }
        
        [Range(1, 10000)]
        public decimal Price { get; set; }
    }
    
  3. Performance: ViewModel তৈরির সময় নিশ্চিত করুন যে, আপনি কেবলমাত্র ভিউয়ের জন্য প্রয়োজনীয় ডেটাই পাস করছেন, যাতে অ্যাপ্লিকেশনের পারফরম্যান্স ভাল থাকে।

সারাংশ:
ViewModel ASP.Net MVC এবং ASP.Net Core অ্যাপ্লিকেশনে ডেটা এবং ভিউয়ের মধ্যে সম্পর্ক স্থাপনে গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি ডেটাকে Controller থেকে View তে পাঠানোর একটি শক্তিশালী এবং ক্লিন পদ্ধতি সরবরাহ করে, যা অ্যাপ্লিকেশন উন্নত পারফরম্যান্স এবং স্কেলেবিলিটি প্রদান করতে সহায়ক।

Content added By
Promotion